package cn.iocoder.yudao.module.pay.splitting.pojo.po;

import cn.iocoder.yudao.framework.business.basic.pojo.po.BaseEntity;
import cn.iocoder.yudao.framework.common.validation.InEnum;
import cn.iocoder.yudao.framework.validation.InEnumCode;
import cn.iocoder.yudao.framework.validation.InEnumValue;
import cn.iocoder.yudao.module.pay.splitting.enums.SplittingChannelEnum;
import cn.iocoder.yudao.module.pay.splitting.enums.SplittingMerchantStatusEnum;
import cn.iocoder.yudao.module.pay.splitting.enums.SplittingMerchantTypeEnum;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

/**
 * <pre>
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 * 数据库表实体
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 * </pre>
 *
 * @author 山野羡民（1032694760@qq.com）
 * @since 2025/05/17
 */
@Data
@TableName("pay_merchant")
@Schema(description = "分账商户")
public class SplittingMerchant extends BaseEntity {

    @Schema(description = "类型：0-个人（小微）、1-个体户（非小微）、2-企业（非小微）。为了快速接入，目前暂时固定为小微")
    @InEnumValue(SplittingMerchantTypeEnum.class)
    private Integer type;

    @Schema(description = "名称：小微-个人真实姓名、个体户/企业-营业执照名称")
    private String name;

    @Schema(description = "负责人电话")
    private String phone;

    @Schema(description = "身份证号码：小微-个人身份证号码、个体和企业-法人身份证号码")
    private String eidNo;

    @Schema(description = "渠道编码，目前固定为：mallbook")
    @InEnumCode(SplittingChannelEnum.class)
    private String channelCode;

    @Schema(description = "渠道用户编号")
    private String channelUserId;

    @Schema(description = "状态：-1-还未注册、0-等待审核、1-注册成功、2-注册失败")
    @InEnum(SplittingMerchantStatusEnum.class)
    private Integer status;

    @Schema(description = "异步通知地址，个体户和企业审核通过之后异步通知")
    private String notifyUrl;

    @Schema(description = "调用渠道的错误码")
    private String channelErrorCode;

    @Schema(description = "调用渠道的错误提示")
    private String channelErrorMsg;

    @Schema(description = "渠道的同步/异步通知的内容")
    private String channelNotifyData;
}
